package com.ycz.controller;


import com.ycz.commons.Result;
import com.ycz.commons.validator.ValidatorUtil;
import com.ycz.entity.Blog;
import com.ycz.entity.PageEntity;
import com.ycz.form.BlogForm;
import com.ycz.query.BlogQuery;
import com.ycz.service.BlogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.*;

import java.util.Collection;
import java.util.Date;
import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author ycz
 * @since 2021-10-10
 */
@RestController
@RequestMapping("/blog")
public class BlogController {

    @Autowired
    @Qualifier(value = "blogServiceImpl")
    private BlogService blogService;

    @Autowired
    @Qualifier(value = "pageEntity")
    private  PageEntity pageEntity=new PageEntity();

//    @GetMapping ("/findAll")
//    public Result blogList(){
//  //      System.out.println(blog);
//        PageEntity pageEntity=new PageEntity();
//        pageEntity.setData(blogService.list(null));
//        pageEntity.setPage(1);
//        pageEntity.setLimit(1);
//        pageEntity.setHasNextPage(true);
//
//        return new Result(pageEntity);
//    }

    @PostMapping("/find")
    public Result blogList(@RequestBody BlogQuery blogQuery){

        System.out.println(blogQuery);
        System.out.println(blogQuery.getPage());
        System.out.println(blogQuery.getLimit());

        blogQuery.setPage((blogQuery.getPage()-1)*blogQuery.getLimit());

        if(blogQuery.getHasNextPage()!=null && blogQuery.getHasNextPage()==false){//为false
            System.out.println("无更多页");
            Integer count= blogService.selectCount(blogQuery);
            blogQuery.setLimit(count);
            pageEntity.setData(blogService.selectBlogByTitleAndContentAndDes(blogQuery));
            pageEntity.setPage(1);
            pageEntity.setLimit(count);
            pageEntity.setHasNextPage(false);
            System.out.println("封装的参数"+
                    pageEntity);
            return new Result(pageEntity);
        }

        pageEntity.setData(blogService.selectBlogByTitleAndContentAndDes(blogQuery));
        pageEntity.setPage(1);
        pageEntity.setLimit(blogQuery.getLimit()+3);
        Integer count= blogService.selectCount(blogQuery);
        /*
        判断是否有下一页
         */
        pageEntity.setHasNextPage(blogQuery.getLimit() < count);

        System.out.println("封装的参数"+
                pageEntity);
        return new Result(pageEntity);
    }


    @PostMapping("/article/{id}")
    public Result getArticle( @PathVariable("id") Integer id){
        System.out.println("文章的id"+id);
        return blogService.selectArticleById(id);
    }

    @PostMapping("/addArticle")
    public Result addArticle(@RequestBody BlogForm blogForm){
        System.out.println("要插入的博客"+blogForm);
        ValidatorUtil.validator(blogForm);
        blogForm.setPutTime(new Date());
        blogForm.setUserId(1L);

        return blogService.insertBlog(blogForm);
    }

    @PostMapping("/updateArticle")
    public Result updateArticle(@RequestBody BlogForm blogForm){
        System.out.println("要更新的博客"+blogForm);
        ValidatorUtil.validator(blogForm);

        return blogService.updateById(blogForm);
    }



}

